package com.jintian.smart.base.api.system.entity;

import com.jintian.smart.base.api.system.constant.SerialNumberRuleTypeEnum;
import com.jintian.smart.kernel.core.domain.IEntity;
import com.jintian.smart.kernel.core.support.SerialNumberIdEnum;
import lombok.Data;
import org.beetl.sql.annotation.builder.FillStrategy;
import org.beetl.sql.annotation.builder.UpdateTime;
import org.beetl.sql.annotation.entity.AssignID;
import org.beetl.sql.annotation.entity.Table;

import java.time.LocalDateTime;

/**
 * 单据序列号 定义表
 */
@Data
@Table(name = "sys_serial_number")
public class SerialNumberEntity implements IEntity {

    /**
     * 主键id
     *
     * @see SerialNumberIdEnum
     */
    @AssignID("snowid")
    private Integer serialNumberId;

    /**
     * 业务
     */
    private String businessName;

    /**
     * 格式
     */
    private String format;

    /**
     * 生成规则
     *
     * @see SerialNumberRuleTypeEnum
     */
    private String ruleType;


    /**
     * 初始值
     */
    private Long initNumber;

    /**
     * 步长随机数范围
     */
    private Integer stepRandomRange;

    /**
     * 备注
     */
    private String remark;

    /**
     * 上次产生的单号, 默认为空
     */
    private Long lastNumber;

    /**
     * 上次产生的单号时间
     */
    private LocalDateTime lastTime;

    @UpdateTime(FillStrategy.INSERT_UPDATE)
    private LocalDateTime updateTime;

    @UpdateTime(FillStrategy.INSERT)
    private LocalDateTime createTime;
}
